The present invention relates to the synchronization of devices, and more particularly to the synchronization of data stored in devices over a network.
In recent years, users of mobile devices have often faced the problem of having the same data stored in the mobile devices as in their stationary computers, such as a server or desktop computer. These mobile devices, such as personal digital assistants (PDA), mobile telephones and portable computers, store a variety of information including calendar entries, contact entries, task lists, and the like. To avoid having to enter information on both the mobile device and on the server, it is desirable to allow the data stored on these devices to be synchronized with each other. Synchronization of data between mobile devices also avoids scheduling conflicting appointments. Further, by synchronizing the data stored in a mobile device the user can be confident that if the data is accidentally erased from the mobile device, the data can be recovered from the server.
One conventional method of synchronizing data between devices is through the use of the protocol standards published by the InfraRed Data Association (IrDA). These protocol standards provide methods for sending data between devices using infrared communications. One of the protocol standards published by the IrDA is OBEX. OBEX stands for “object exchange” and describes a way to send an arbitrary data object from one unit to another in a simple way. The OBEX protocol consists of two major parts, the session level protocol and the application framework. The session level protocol dictates what can be said during the conversation between the units which are exchanging data and a set of operational codes (opcodes) that define specific actions. The application framework, which is built on top of the session protocol, provides a model for representing the objects to be sent. The application framework is necessary to ensure interoperability between units using OBEX. For more information regarding OBEX, the interested reader should refer to “IrDA Object Exchange Protocol IrOBEX”, Counterpoint Systems Foundry, Inc., Version 1.2, Mar. 18, 1999, which is expressly incorporated herein by reference.
Another protocol standard published by the IrDA is known as Infrared Mobile Communication (IrMC). IrMC provides a model for how to store and access data, such as calendar items, contacts, and the like. Using the IrMC model, when changes are made to a calendar item in the mobile device, the changes will be made to the calendar item in the server when the mobile device and stationary computer are subsequently synchronized. Typically, IrMC is placed in the application layer on top of the OBEX layer in an IR protocol stack. For more information regarding IrMC the interested reader should refer to “Specifications For Ir Mobile Communications (IrMC)”, Version 1.1 Mar. 1, 1999, which is expressly incorporated herein by reference.
Although a combination of IrMC and OBEX provides an efficient model for synchronizing data, the medium over which these protocols are designed to communicate has many deficiencies. For example, since these protocols are designed to operate using infrared communications, devices which are to exchange data must have a line of sight connection between them in order to ensure that the devices can communicate. Further, these protocols are connection oriented, and hence, these protocols are not designed to operate in a connectionless environment such as the Internet.
As Internet communications continue to proliferate it is desirable to provide protocols compatible with the Internet Protocol (IP) which would allow users of various devices to access information and services stored on the Internet. One model for providing access to information and services stored on the Internet to mobile devices, such as wireless phones, is known as Wireless Applications Protocol (WAP). WAP is an open global specification which is designed to enable easy fast delivery of relevant information and services to mobile users.
FIG. 1 illustrates an exemplary network configuration for a mobile device to communicate over the Internet using WAP. Mobile device 110 communicates over air interface 120 with antenna 130. The signals received by antenna 130 are communicated to a WAP to IP Gateway 140. WAP to IP Gateway 140 is primarily responsible for converting the signals between WAP and IP protocols. After converting the signals received from antenna 130, the WAP to IP Gateway 140 forwards the signals over network 150 to server 160. Server 160 receives the signals and sends a response, if requested, back to the mobile device 110 over network 150 to WAP to IP Gateway 140. WAP to IP Gateway 140 converts the signals received from server 160 from IP to WAP and forwards the signals to antenna 130. Antenna 130 then sends the WAP signals over air interface 120 to mobile device 110. The network of FIG. 1 has been simplified for ease of understanding. One skilled in the art will recognize that the network of FIG. 1 could include base stations, mobile switching centers, and the like.
Since WAP is designed as a connectionless protocol, WAP, like IP is also stateless. Accordingly, the state of the application must be maintained by the application itself.
FIG. 2 illustrates conventional signaling between a server and client in connectionless protocols such as WAP and IP. Typically, the client 210 will initiate a session with server 220 by sending an Initiate Session message 230 to the server 220. The server 220 will respond with a Session Initiated message 235 containing the session ID for the connection between the client 210 and server 220. Now that the session has been initiated, the client 210 sends a Request for Information message 240, including the session ID, to the server 220. In response, the server 220 sends an Information Response message 245, including the session ID to the client 210. As illustrated by the broken lines, the client 210 may send more Information Request messages and the server 220 continues to reply with Information Response messages. When the client 210 desires to terminate the session with the server 220, the client 210 sends an End Session message 250. In response the server 220 sends a Session Ended message 255. Each of the messages exchanged between the client 210 and the server 220 contains the session ID so that both the client 210 and the server 220 can associate the received messages with the particular session established between the client 210 and server 220. In typical Internet communications, the client is a browser and the session ID is sent in hidden fields of forms passed between the browser and the server.
As illustrated in FIG. 2, connectionless protocols such as WAP have defined Request/Response pairs such that the client who has initiated the session will also control the session. In other words, connectionless protocols define that the party who initiates the session will be the party who sends the information requests and the other party will only send messages in response to information requests. When synchronizing data between a mobile device and a server, it is preferable to place the synchronization logic on the server side because the mobile device typically has limited resources in terms of memory and processing capacity. Accordingly, the synchronization process should be controlled by the server which typically has sufficient memory and processing capacity for performing the synchronization. In typical synchronization applications the mobile device initiates the synchronization process. However, as described above, connectionless protocols would require that the mobile device, and not the server, control the session.
Accordingly, it would be desirable to provide a synchronization protocol such as IrMC which avoids one or more of the deficiencies of the infrared air interface. It would also be desirable to provide a synchronization protocol that operates in a connectionless environment such as the Internet. It would further be desirable to provide a synchronization protocol where the synchronization session is initiated by the mobile device but is controlled by the server.